from django.db import transaction
from literature.models import *
from basic_component_related_management.models import *
from dataset.models import *

def clear_dippr_data_safely():
    from django.db import connections
    with connections['default'].cursor() as cursor:
        cursor.execute("SELECT current_database();")
        print("当前实际数据库:", cursor.fetchone()[0]) 
    """
    安全清空由DIPPR数据导入脚本创建的所有数据
    """
    with transaction.atomic():  # 使用事务确保原子性
        # 1. 删除数据点属性映射
        DataPointExpDatasetPropertyMap.objects.all().delete()
        print("已清空 DIPPR DataPointExpDatasetPropertyMap")

        # 2. 删除数据点变量映射 (温度相关数据)
        DataPointExpDatasetVariableMap.objects.all().delete()
        print("已清空 DIPPR DataPointExpDatasetVariableMap")

        # 3. 删除数据点
        DataPoint.objects.all().delete()
        print("已清空 DIPPR DataPoint")

        # 4. 删除属性映射
        ExpDatasetPropertyMap.objects.all().delete()
        print("已清空 DIPPR ExpDatasetPropertyMap")

        # 5. 删除变量映射
        ExpDatasetVariableMap.objects.all().delete()
        print("已清空 DIPPR ExpDatasetVariableMap")

        # 6. 删除组件映射
        ExpDatasetComponentMap.objects.all().delete()
        print("已清空 DIPPR ExpDatasetComponentMap")

        # 7. 删除数据集与相态的关系 - 修正后的语法
        ExpDataset.phases.through.objects.all().delete()
        print("已清空 DIPPR 数据集-相态关系")

        # 8. 删除数据集
        ExpDataset.objects.all().delete()
        print("已清空 DIPPR ExpDataset")

        # 9. 删除常量物性值
        ComponentConstPropertyValue.objects.all().delete()
        print("已清空 ComponentConstPropertyValue")

        # 10. 可选: 删除创建的常量物性定义 (如果需要)
        # ComponentConstProperty.objects.all().delete()
        # print("已清空 ComponentConstProperty")

        print("DIPPR数据清除完成!")
